home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
a_utils
/
expanded.lha
/
expanded
/
hdr
/
Lap1.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-19
|
3KB
|
126 lines
//
// Linear-Affine-Projective Geometry Package
//
// Lap1.h
//
// $Header$
//
// William J.R. Longabaugh
// University of Washington
//
// Implementation of the linear-affine-projective geometry
// package described in William J.R. Longabaugh, "An Expanded
// System for Coordinate-Free Geometric Programming", Master's
// thesis, University of Washington, 1992.
//
// Copyright (c) 1992, William J.R. Longabaugh
// Copying, use and development for non-commercial purposes permitted.
// All rights for commercial use reserved.
// This software is unsupported and without warranty; it is
// provided "as is".
//
// ***********************************************************************
#ifndef Lap1_h
#define Lap1_h
// Forward declarations of classes that are available to the user:
class Space;
class VSpace;
class ASpace;
class PSpace;
class SubSet;
class VSubSet;
class ASubSet;
class PSubSet;
class Basis;
class Simplex;
class Frame;
class VBasis;
class HFrame;
class GeOb;
class Vector;
class APoint;
class AVector;
class VectorEC;
class AVectorEC;
class PPoint;
class Map;
class LinearMap;
class AffineMap;
class ProjectiveMap;
class MultiMap;
class MLM;
class MAM;
class AugScalar;
class GeObList;
class ScalarList;
class IntList;
class BasisList;
class SpaceList;
// Forward declarations of classes that are used to implement the
// package. They should not be used otherwise:
class SubSetInfo;
class SpaceInfo;
class MultiIndex;
class MITuple;
class MMData;
// Object names are kept in buffers of this size:
const int MAX_NAMESIZE = 75;
// Error bound for equality of Scalars. Use define, since CFRONT 1.2
// allocates storage for "const Scalar EPSILON":
#define EPSILON (1.0E-6)
// Define various enumerated data types used by the system:
enum Infnum {INFINITY = -23457};
enum EnumSet {SPACETYPES, BASISTYPES, GEOBTYPES, MAPTYPES, MULTITYPES,
SUBSETTYPES, SRELTYPES};
// Define enumeration types for type fields:
enum SpaceType {NULL_SPACE, VEC_SPACE, AFF_SPACE, PROJ_SPACE, ANY_SPACE};
enum BasisType {NULL_BASIS, SIMPLEX, FRAME, VBASIS, HFRAME, ANY_BASIS};
enum GeObType {NULL_GEOB, VECTOR, AFF_POINT, AFF_VECTOR,
VEC_EC, AFF_VEC_EC, PROJ_POINT, ANY_GEOB};
enum MapType {NULL_MAP, LIN_MAP, AFF_MAP, PROJ_MAP, ANY_MAP};
enum MultiType {NULL_MULTI, MULTI_LINEAR, MULTI_AFFINE, ANY_MULTI};
enum SubSetType {NULL_SUBSET, LINEAR_SUBSET, AFFINE_SUBSET,
PROJECTIVE_SUBSET, ANY_SUBSET};
// Designations of spaces in 6-space sets:
enum SRel {LINEARIZATION, AFFINE, TANGENT, PROJECT_COMP,
LIN_DUAL, TANG_DUAL, NO_RELATION, SAME_SPACE};
// Types of Standard Euclidean Maps:
enum StdMaps {INNER_PROD, CROSS_PROD};
// Booleans:
enum Boolean {FALSE = 0, TRUE = 1};
// Scalars:
typedef double Scalar;
#endif